package ast;

public abstract class AbstractDeclaracion implements Declaracion {

	public Tipo tipo;
	public String nombre;
	public int ambito;
	public int direccionMemoria;
	public int linea;

	public AbstractDeclaracion(String nombre, Tipo tipo, int linea) {
		this.nombre = nombre;
		this.tipo = tipo;
		this.linea=linea;
	}

	@Override
	public Tipo getTipo() {
		if (tipo instanceof TipoStruct)
			return TipoStruct.getStruct(((TipoStruct) tipo).nombre);
		else
			return tipo;
	}

	@Override
	public String getNombre() {
		return nombre;
	}

	@Override
	public int getAmbito() {
		return ambito;
	}

	@Override
	public void setAmbito(int ambito) {
		this.ambito = ambito;
	}

	@Override
	public int getDireccionMemoria() {
		return this.direccionMemoria;
	}
	@Override
	public int getLinea(){
		return this.linea;
	}

}
